/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package produccion.vistas;

import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;
import produccion.controlador.ControladorProduccion;
import static produccion.vistas.BuscarProduccion.ACTIVA;

/**
 *
 * @author James
 */
public class ProduccionNueva extends javax.swing.JInternalFrame {

    /**
     * Creates new form ProduccionNueva
     */
    public ProduccionNueva() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        dpFecha = new com.toedter.calendar.JDateChooser();
        btnSiguiente = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();

        setClosable(true);
        setIconifiable(true);
        setTitle("Produccion Nueva");

        dpFecha.setDateFormatString("dd/MM/yyyy");

        btnSiguiente.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/next 2.png"))); // NOI18N
        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSiguienteActionPerformed(evt);
            }
        });

        jLabel1.setText("Fecha:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(23, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addComponent(dpFecha, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(71, 71, 71)
                .addComponent(btnSiguiente)
                .addGap(76, 76, 76))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(btnSiguiente)
                    .addComponent(dpFecha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addContainerGap(46, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnSiguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSiguienteActionPerformed
        // TODO add your handling code here:
        if (dpFecha.getDate()!=null){
            modelos.Asignacion asignacion = ControladorProduccion.buscarAsignacionPorFecha(dpFecha.getDate());
            modelos.Produccion prod = ControladorProduccion.buscarProduccionPorFecha(dpFecha.getDate());
            if (asignacion != null && prod==null) {
                modelos.Produccion produccion = new modelos.Produccion();
                produccion.setEstado(ACTIVA);
                produccion.setFecha(dpFecha.getDate());
                produccion.setAsignacion(asignacion);

                ArrayList<modelos.Asignacionxempleado> listaAsignacionxempleado = ControladorProduccion.
                        buscarAsignacionxempleado(asignacion.getIdasignacion());
                ArrayList<modelos.Produccionxempleado> listaProduccionxempleado = new ArrayList<>();
                modelos.Produccionxempleado produccionxempleado;
                modelos.ProduccionxempleadoId id;
                modelos.Asignacionxempleado asignacionxempleado;
                for (int i = 0; i < listaAsignacionxempleado.size(); i++) {

                    asignacionxempleado = listaAsignacionxempleado.get(i);
                    id = new modelos.ProduccionxempleadoId();
                    id.setIdempleado(asignacionxempleado.getId().getIdempleado());
                    id.setIdasignacion(asignacion.getIdasignacion());

                    produccionxempleado = new modelos.Produccionxempleado();
                    produccionxempleado.setId(id);
                    produccionxempleado.setAsignacionxempleado(asignacionxempleado);

                    listaProduccionxempleado.add(produccionxempleado);
                }

                ArrayList<modelos.Asignacionxproducto> listaAsignacionxproducto = ControladorProduccion.
                        buscarAsignacionxproducto(asignacion.getIdasignacion());
                modelos.Asignacionxproducto asignacionxproducto;
                ArrayList<modelos.Produccionxproducto> listaProduccionxproducto = new ArrayList<>();
                modelos.Produccionxproducto produccionxproducto;
                modelos.ProduccionxproductoId id2;
                for (int i = 0; i < listaAsignacionxproducto.size(); i++) {

                    asignacionxproducto = listaAsignacionxproducto.get(i);
                    id2 = new modelos.ProduccionxproductoId();
                    id2.setIdasignacion(asignacion.getIdasignacion());
                    id2.setIdproducto(asignacionxproducto.getId().getIdproducto());

                    produccionxproducto = new modelos.Produccionxproducto();
                    produccionxproducto.setId(id2);
                    produccionxproducto.setAsignacionxproducto(asignacionxproducto);

                    listaProduccionxproducto.add(produccionxproducto);
                }

                ProduccionDetalle produccionDetalle = new ProduccionDetalle(produccion, listaProduccionxempleado, listaProduccionxproducto, ProduccionDetalle.NUEVO);
                getDesktopPane().add(produccionDetalle);
                produccionDetalle.setVisible(true);
        } else if(asignacion==null){
            JOptionPane.showMessageDialog(this, "No se encontro una asignacion para la fecha seleccionada");
        }else if(prod != null){
            JOptionPane.showMessageDialog(this, "Se encontro una produccion para la fecha seleccionada");
        }
        }else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una fecha");
        }
    }//GEN-LAST:event_btnSiguienteActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnSiguiente;
    private com.toedter.calendar.JDateChooser dpFecha;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables
}
